
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>如何实现数据库的无缝迁移？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>如何实现数据库的无缝迁移？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">步骤</div>
          <div class="card-question">在数据库迁移前的准备阶段，制定迁移计划时应考虑哪三个关键要素？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">步骤</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">1. 迁移策略：选择合适的迁移策略，如全量迁移、增量迁移或双写迁移。 2. 时间窗口：选择对业务影响最小的迁移时间窗口。 3. 回滚计划：制定详细的回滚计划，以应对可能出现的问题。</div>
          </div>
          <div class="card-source">来源: 1.3. 制定迁移计划</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">文档中提到了哪两种主要的数据迁移方式？它们分别是如何处理数据的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">1. 全量迁移：将现有数据库的数据一次性迁移到目标数据库中，可使用 mysqldump、pg_dump 等工具。 2. 增量迁移：处理迁移期间的数据变化，通常使用变更数据捕获（CDC）工具或第三方数据同步工具来捕获并应用增量数据。</div>
          </div>
          <div class="card-source">来源: 2.1. 数据迁移</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">为了实现无缝迁移，文档介绍了哪三种具体的策略？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档介绍的三种无缝迁移策略是：双写策略（Dual-write）、蓝绿部署（Blue-Green Deployment）和滚动更新（Rolling Update）。</div>
          </div>
          <div class="card-source">来源: 4. 无缝迁移策略</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">什么是双写（Dual-write）迁移策略？它的主要优点和挑战是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">双写策略是指在迁移期间，应用程序同时将数据写入源数据库和目标数据库。这种方法的优点是可以确保迁移期间的数据一致性，但挑战是可能需要处理数据的冲突和同步问题。</div>
          </div>
          <div class="card-source">来源: 4.1. 双写策略</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">步骤</div>
          <div class="card-question">数据库迁移完成后，进行数据验证时需要检查哪些关键方面？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">步骤</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">数据验证阶段需要进行两方面的检查：1. 数据一致性检查，验证迁移后的数据与源数据一致，并检查数据完整性、索引和约束。2. 性能测试，评估目标数据库的性能是否满足要求。</div>
          </div>
          <div class="card-source">来源: 2.3. 数据验证</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在迁移后的监控与优化阶段，文档推荐使用哪些类型的工具来跟踪系统性能？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档推荐使用 Prometheus、Grafana、New Relic 等数据库监控工具来提供实时的监控数据，以跟踪系统的性能和健康状态。</div>
          </div>
          <div class="card-source">来源: 3.1. 监控和优化</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">步骤</div>
          <div class="card-question">在启动数据库迁移项目时，评估现有数据库需要分析哪三个核心维度？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">步骤</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">评估现有数据库需要分析三个核心维度：1. 分析数据库结构（表结构、索引、存储过程等）；2. 评估数据量和增长情况；3. 识别所有依赖当前数据库的应用程序和服务。</div>
          </div>
          <div class="card-source">来源: 1.1. 评估现有数据库</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">蓝绿部署（Blue-Green Deployment）策略在数据库迁移中是如何应用的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">蓝绿部署策略首先将数据库迁移到目标环境（绿色环境），并在该环境上进行全面测试。一旦测试通过，就将业务流量从旧环境（蓝色）切换到新环境（绿色），从而完成迁移。</div>
          </div>
          <div class="card-source">来源: 4.2. 蓝绿部署</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">实践</div>
          <div class="card-question">在将MySQL数据库迁移到Amazon RDS的案例中，全量数据迁移是使用什么工具完成的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">实践</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">案例分析中提到，使用 `mysqldump` 工具将数据从源MySQL数据库导出，然后通过Amazon RDS的导入工具将数据导入目标数据库。</div>
          </div>
          <div class="card-source">来源: 5. 案例分析</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
